#include<iostream>
#include<unistd.h>
#include<cstdio>
#include<cstring>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

using namespace std;

#define SIZE 1024 

//1.C接口的库函数对文件进行写入和读取
// int main()
// {
//     //1.w是从头开始写, a是从后面开始追加
//     //2.如果路径只写一个就是相对路径，他是在进程运行的路径下cwd, 写了就是绝对路劲
//     FILE* fp = fopen("./file.txt", "w");
//     if(fp == nullptr)
//     {
//         perror("open failed!");
//         return -1;
//     }

//     char buffer[SIZE] = "xinshen\n";
//     //这里需要写strlen(buffer)而不是strlen(buffer) + 1，因为最后以'\0'是C语言规定的其他语言并没有这个说法  
//     fwrite(buffer, strlen(buffer), 1, fp);
    
//     fclose(fp);
//     return 0;
// }

//2.使用系统调用
int main()
{
    //O_WRONLY-读写, O_CREAT-没有就创建, O_APPEND表示追加
    int fd = open("./log.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    if(fd < 0)
    {
        cerr << "open failed!" << endl;
    }

    char buffer[SIZE] = "hushen shige dashuaibi\n";
    write(fd, buffer, sizeof(buffer));

    close(fd);
    return 0;
}

//3.理解重定向
int main()
{
    umask(0);

    
    return 0;
}